home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1997-11-25 | 54.5 KB | 1,783 lines
v.0.1 8 lipiec 1997 Firewalle i proxy serwery Mark Grennan, markg@netplus.net t│umacz: Ziemek Borowski <ziembor@ziembor.waw.pl> v0.4, 8 listopad 1996 Dokument ten powsta│ w celu uczenia podstaw system≤w firewalli oraz dostarczenia niekt≤rych szczeg≤│≤w w zakresie ustawania (konfigurowa¡ nia) filtruj▒cych i posredniczacych firwalli na Linuxie. Oryginalna wersja tego dokumentu znajduje siΩ pod adresem: <http://okcfo¡ rum.org/~markg/Firewall-HOWTO.html> za╢ polskie t│umaczenie: <http://www.ziembor.waw.pl/~ziembor/JTZ/Firewall-HOWTO.pl.html> ______________________________________________________________________ Table of Contents 1. Wprowadzenie 1.1 Informacja zwrotna, uwagi. 1.2 Deklaracje 1.3 Copyright 1.4 Moje pobudki do tej pracy. 1.5 TODO (do zrobienia) 1.6 Zobacz tak┐e: 2. Understanding Firewalls 2.1 Wady firewalli 2.2 Typy firewalli 2.2.1 Filtuj▒ce firwalle 2.2.2 Serwery proxy 3. Ustawianie firewalla 3.1 Wymagania sprzΩtowe. 4. Oprogramowanie dla firewalli 4.1 DostΩpne pakiety 4.2 TIS Firewall Toolkit kontra SOCKS 5. Przygotowanie Linuxa 5.1 Kompilacja j▒dra. 5.2 Ustawienie dw≤ch kart sieciowych 5.3 Ustawienie adres≤w sieciowych 5.4 Testowanie twojej sieci 5.5 Zabezpieczanie firewalla. 6. Konfigurowanie filtrowania IP (IPFWADM) 7. Instalowania serwera proxy - TIS 7.1 Pobranie oprogramowania 7.2 Kompilacja TIS FWTK 7.3 Instalacja TIS FWTK 7.4 Konfiguracja firewalla TIS FWTK 7.4.1 Plik netperm-table 7.4.2 Plik inetd.conf 7.4.3 Plik /etc/services 8. Serwer proxy SOCKS 8.1 Konfigurowanie serwera Proxy 8.2 Konfiguracja serwera proxy 8.2.1 Plik dostΩpu. Access File 8.2.2 Tablica trasowania 8.2.3 DNS zza firewalla Ustawienie us│ugi DNS zza firewalla jest prostym zadaniem. Potrzeba jedynie ustawienia DNS na maszynie z firewallem. I inne maszyny za firewallem bΩd▒ go u┐ywa│y. 8.3 Wsp≤│praca z serwerami proxy 8.3.1 Unix 8.3.2 MS Windows i Trumpet Winsock 8.3.3 Ustawienie serwera po╢rednicz▒cego do pracy z pakietami UDP. 8.4 Wady serwer≤w proxych 9. Konfiguracja zaawansowana. 9.1 Wielkie sieci wymagaj▒ po│o┐enia nacisku na bezpiecze±stwo 9.1.1 Konfiguracja sieci 9.1.2 Serwer proxy 10. Od t│umacza. ______________________________________________________________________ 1. Wprowadzenie Dokument ten Firewall-HOWTO zosta│ napisany przez Davida Ruddera <mailto:drig@execpc.com>. Chcia│bym Mu podziΩkowaµ za zezwolenie na uaktualnienie jego pracy. Firewalle zyska│y ostatnio wielk▒ s│awΩ jako defintywne rozwi▒zanie w dziedzinie bezpiecze±stwa Internetu. WiΩkszo╢µ tej s│awy jest zas│u┐ona, jednak czΩ╢µ wynika z nieporozumienia. To JTZ ma na celu przegl▒d: czym s▒ firewalle, jak je konfigurowaµ, czym s▒ serwery proxy i jak je konfigurowaµ oraz aplikacje (zastosowania) tej technologii poza zakresem bezpiecze±stwa. 1.1. Informacja zwrotna, uwagi. Wszelkie uwagi bΩd▒ mile widziane. ProszΩ: DONOªCIE O WSZELKICH NIEªCISúOªCIACH W TYM DOKUMENCIE . Jestem cz│owiekiem, i jestem omylny. Je╢li znajdziesz jakie╢ popraw je (w moim najwy┐szym interesie). BΩdΩ pr≤bowa│ odpowiedzieµ na wszystkie listy, ale jestem zajΩtym cz│owiekiem, tak wiΩc nie obra┐aj siΩ proszΩ je╢li nie odpowiem. M≤j adres: <markg@netplus.net> 1.2. Deklaracje NIE ODPOWIADAM ZA JAKIEKOLWIEK ZNISZCZENIA WYNIKAJíCE ZE STOSOWANIA TEGO DOKUMENTU Dokument ten jest pomy╢lany jako wprowadzenie do technologii firewalli i serwer≤w proxy. Nie jestem, i nie zamierzam sobie ro╢ciµ pretensji do bycia ekspertem w sprawach bezpiecze±stwa. Jestem po prostu cz│owiekiem kt≤ry przeczyta│ co nieco, i pasjonuje siΩ komputerami bardziej ni┐ inni. ProszΩ, pisz▒c ten tekst chcΩ pom≤c ludziom zaznajomiµ siΩ z tym tematem, i nie jestem got≤w dawaµ g│owy za dok│adno╢µ podawanych przeze mnie danych. 1.3. Copyright Je╢li nie jest powiedziane inaczej, prawa autorskie dokumenty z serii Linux Jak To Zrobiµ nale┐▒ do ka┐dego z autor≤w. Mog▒ byµ powielane i rozpowszechniane w w ca│o╢ci w czΩ╢ciach, w formie ,,papierowej'' i elektronicznej dop≤ki wszΩdzie (w ka┐dej z czΩ╢ci) zachowana jest informacja o prawach i autorstwie. Komercyjna redystrybucja jest dozwolona i wskazana; jednak┐e, autor powinien byµ poinformowany o tym fakcie. Wszystkie t│umaczenia, poprawki jΩzykowe, i prace w│▒czaj▒ce musz▒ zawieraµ niniejsz▒ notΩ o prawach autorskich. Je╢li masz jakie╢ zapytania, proszΩ o kontakt: Mark Grennan <mailto:markg@netplus.net>. 1.4. Moje pobudki do tej pracy. Pomimo wielu dyskusji w grupach comp.os.linux.* (w ci▒gu ostatniego roku) na temat firewalli wydaje mi siΩ trudnym znalezienie informacji kt≤rych potrzebowa│em do ustawienia i skonfigurowania firewalla. Oryginalna wersja tego HOWto by│a pomocna, ale nieaktualna. Mam nadziejΩ, ┐e ta poprawiona wersja ,,Firewall HOWto'' autorstwa Davida Ruddera dostarczy wszystkim informacji jakiej potrzebuj▒ do stworzenia dzia│aj▒cych ,,╢cian ognia'' w ci▒gu godzin, nie tygodni. Poza tym uwa┐am ┐e powinienem zwr≤ciµ m≤j d│ug spo│eczno╢ci Linuxowej. 1.5. TODO (do zrobienia) ╖ Instrukcje na temat ustawie± klient≤w ╖ Znalezienie dobrych serwer≤w proxych dla us│ug bazuj▒cych na UDP dzia│aj▒cych na Linuxie. 1.6. Zobacz tak┐e: ╖ NET-2 HOWTO <http://www.ippt.gov.pl/~ppogorze/Linux/JTZ/zrobione/> ╖ The Ethernet HOWTO ╖ The Multiple Ethernet Mini HOWTO ╖ Networking with Linux ╖ The PPP HOWTO ╖ TCP/IP Network Administrator's Guide by O'Reilly and Associates ╖ The Documentation for the TIS Firewall Toolkit WΩze│ pajΩczyny nale┐▒cy do Trusted Information System's (TIS) posiada wspania│a kolekcjΩ dokumentacji dotycz▒cej firewalli i pokrewnych temat≤w. Poza tym pracujΩ na projektem dotycz▒cym bezpiecze±stwa: ,,Bezpieczny Linux''. W miejscu tym zgromadzi│em wszystkie informacje, dokumentacje i programy potrzebne do stworzenia bezpiecznego Linuxa. Napisz do mnie je╢li chcesz otrzymaµ wiΩcej informacji. 2. Understanding Firewalls Firewall - ,,╢ciana ogniowa'' jest terminem wziΩtym z konstrukcji samochodu. W samochodach firewalle fizycznynie oddzielaj▒ silnik od pasa┐er≤w. To znaczy, ┐e chroni▒ one pasa┐er≤w w wypadku gdy silnik zapali siΩ ca│y czas dostarczaj▒c kontroli nad nim. Komputerowe firewalle s▒ urz▒dzeniami, kt≤re chroni▒ sieci prywatne od czΩ╢ci publicznej (jakiej jak Internet). Komputer bΩd▒cy ,,╢cian▒ ognia'' od tej chwili nazywany ,,firewallem'' mo┐e (musi) byµ obecny tak w sieci chronionej jak i w Internecie. Chroniona sieµ nie mo┐e byµ osi▒galna z Internetu, podobnie jak Internet nie mo┐e byµ osi▒galny z chronionej sieci. Dla niekt≤rych dosiΩgniΩcie Internetu z izolowanej sieci jest mo┐liwe jedynie poprzez zalogowanie siΩ na firewallu (telnetem) i penetracja Sieci stamt▒d. Najprostsz▒ form▒ firewalla jest podw≤jnie zadomowiony system (tj. system z podw≤jnym po│▒czeniem sieciowym). Je╢li mo┐esz ZAUFA╞ WSZYSTKIM swoim u┐ytkownikom, mo┐esz prosto skonfigurowaµ Linuxa (wy│▒czaj▒c przy kompilacji j▒dra forwarding / gatewaying) Mog▒ oni logowaµ siΩ na tym systemie i u┐ywaµ aplikacji sieciowych takich jak telnet, FTP, czytaµ pocztΩ i innych jakich dostarczasz. Z takim ustawieniem, tylko jeden komputer z twojej sieci widzi resztΩ ╢wiata poza firewallem. Pozosta│e systemy w twojej chronionej sieci nie potrzebuj▒ nawet ustawienia domy╢lnego routingu. Aby powy┐szy firewall dzia│a│ MUSISZ UFA╞ WSZYSTKIM SWOIM U»YTKOWNIKOM Nie jest to zalecane rozwi▒zanie. 2.1. Wady firewalli Problemem filtruj▒cych firewalli jest to, ┐e ograniczaj▒ dostΩp do twojej sieci z Internetu. Tylko us│ugi na filtrowanie kt≤rych zezwoli│e╢ s▒ dostΩpne. Na serwerach proxych u┐ytkownicy mog▒ autoryzowaµ siΩ na firewallu i dopiero wtedy maj▒ (z systemu wewn▒trz sieci prywatnej) dostΩp do Internetu. Poza tym, nowe typy klient≤w sieciowych i serwer≤w przybywaj▒ prawie codziennie. Musisz wtedy wynale╝µ nowy spos≤b zezwolenia na kontrolowany ich dostΩp do twojej sieci, zanim bΩd▒ u┐yte. 2.2. Typy firewalli Istniej▒ dwa typy firewalli: 1. firewalle filtruj▒ce IP - blokuj▒ ca│y ruch, ale przepuszczaj▒ dopuszczony. 2. serwery proxy - serwery po│▒czeniowe - wykonuj▒ po│▒czenie sieciowe za ciebie. 2.2.1. Filtuj▒ce firwalle Firewalle filtruj▒ce dzia│aj▒ na poziomie pakiet≤w IP. S▒ zaprojektowane do kontroli przep│ywu bazuj▒c na adresie ╝r≤d│owym, docelowym, porcie i typie pakietu (zawartych w ka┐dym z pakiet≤w). Ten typ firewalli jest bardzo bezpieczny, ale traci wiele typ≤w zapisu. Mo┐e zablokowaµ ludziom z dostΩp z sieci prywatnej, ale nie powie, kto dosta│ siΩ do twojego systemu publicznego, ani kto wyszed│ z sieci lokalnej do Internetu. Filtruj▒ce firewalle s▒ bezwzglΩdnymi filtrami. Nawet je╢li chcesz daµ komu╢ z zewn▒trz dostΩp do twoich serwer≤w ,,prywatnych'' nie jeste╢ w stanie bez dania tego dostΩpu wszystkim (t│um. jak rozumiem spod tego adresu) Linux posiada opcjΩ filtrowania pakiet≤w w j▒drach powy┐ej 1.3.x. 2.2.2. Serwery proxy Serwery proxy pozwalaj▒ na niebezpo╢redni dostΩp do Internetu, przez firewall. Najlepszym przyk│adem jak to pracuje jest osoba telnetuj▒ca siΩ do systemu i stamt▒d wykonuj▒ca nastΩpne po│▒czenie. Tylko ┐e w wypadku serwer≤w proxy proces ten nastΩpuje automatycznie. Gdy │▒czysz siΩ z proxy serwerem za pomoc▒ oprogramowania klienckiego startuje on swojego klienta i dostarcza ci danych kt≤rych zarz▒dza│e╢. Poniewa┐ serwery proxy podwajaj▒ ka┐de po│▒czenie, mo┐liwe jest zapisywanie ka┐dego z nich. Wspania│▒ rzecz▒ w serwerach proxy jest to, ┐e s▒ w pe│ni bezpieczne, gdy s▒ prawid│owo ustawione. Nie pozwalaj▒ nikomu przej╢µ. Nie dokonuj▒ bezpo╢redniego routingu. 3. Ustawianie firewalla 3.1. Wymagania sprzΩtowe. Naszym przyk│adem nich bΩdzie komputer i486-DX66 z 16 Mb RAMu oraz 500Mb partycj▒ Linuxow▒. System ten posiada dwie karty sieciowe, jedn▒ po│▒czon▒ z nasz▒ sieci▒ prywatn▒, a drug▒ do sieci lokalnej nazywanej stref▒ zdemilitaryzowan▒ (DMZ). DMZ posiada router po│▒czony do Internetu. Jest to ca│kiem przyjemny standard dla biznesu. Powiniene╢ u┐yµ jednej karty sieciowej oraz modemu z PPP do intenetu. Firewall powinien posiadaµ dwa adresy IP. Znam wielu ludzi posiadaj▒cych ma│e LANy w domu z dwoma lub trzema komputerami. Mo┐esz rozpatrzyµ nastΩpuj▒cy model: w│o┐yµ wszystkie modemy do komputera z Linuxem (np. star▒ i386) i po│▒czyµ wszystkie do Internetu │▒czem komutowanym. Z takim ustawieniem, gdy tylko jedna osoba ci▒gnie dane mo┐e u┐yµ wszystkich modem≤w (a wiΩc i dzia│aµ 2-3 krotnie szybciej ; -). 4. Oprogramowanie dla firewalli 4.1. DostΩpne pakiety Je╢li wszystkim czego potrzebujesz jest filtruj▒cy firewall potrzebujesz jedynie Linuxa i podstawowych pakiet≤w sieciowych. Jednym z pakiet≤w kt≤ry mo┐e nie zawieraµ siΩ w twojej dystrybucji jest IP Firewall Administration tool (przyp. t│um. w RedHacie 4.0 i Debianie 1.2.* jest) (IPFWADM) z Je╢li chcesz postawiµ serwer proxy potrzebujesz jednego z ni┐ej wymienionych pakiet≤w: 1. SOCKS 2. TIS Firewall Toolkit (FWTK) 4.2. TIS Firewall Toolkit kontra SOCKS Trusted Information System ( <http://www.tis.com>) jest fragmentem kolekcji program≤w zaprojektowanych dla firewalli. Program ten udostΩpnia podobne rzeczy jak SOCK, ale jest zbudowany na innych zasadach. Tam gdzie Socks posiada jeden program przeprowadzaj▒cy wszystkie transakcje s internetem, TIS dostarcza jednego programu dla ka┐dego z narzΩdzi kt≤rych chcesz u┐yµ w firrewallu. Dla pokazania kontrastu u┐yjmy przyk│ad≤w WWW i dostΩpu za pomoc▒ telnetu. U┐ywaj▒c SOCKS, ustawiasz jeden plik konfiguracyjny i jednego demona. U┐ywaj▒c tego pliku tak telnet jak i WWW s▒ dostΩpne, podobnie jak inne us│ugi kt≤rych nie zakaza│e╢. W pakiecie TIS ustawiasz jednego demona dla (osobno) WWW i Telnetu z osobnymi plikami konfiguracyjnymi. Po zrobieniu tego inne us│ugi internetowe s▒ zakazane dop≤ki ich explicite nie ustawisz. Je╢li demon dla specyficznych us│ug jest niedostΩpny (tak jak talk), istniej▒ ,,plug-in-y'' dla demona, ale nie tak elastyczne i │atwe w konfiguracji jak inne narzΩdzia. R≤┐nica wygl▒da na niewielk▒, jest jednak istotna. SOCKS pozwala Ci byµ spokojnym. Przy kiepsko ustawionym SOCKS serwerze kto╢ z wewn▒trz mo┐e uzyskaµ wiΩkszy dostΩp do Internetu ni┐ by│o pocz▒tkowo planowane. Z pakietem TIS ludzie wewn▒trz sieci maj▒ jedynie taki dostΩp na jaki zezwoli│ administrator. SOCKS s▒ │atwiejszy do konfiguracji, │atwiejszy do kompilacji i pozwala na wiΩksz▒ elastyczno╢µ. TIS jest bardziej bezpieczny, jesli chcesz ustawiaµ u┐ytkownik≤w wewn▒trz chronionej sieci. Oba dostarczaj▒ ca│kowitego bezpiecze±stwa z zewn▒trz. OpiszΩ proces instalacji obydwu. 5. Przygotowanie Linuxa 5.1. Kompilacja j▒dra. Zacznij od ╢wie┐ej instalacji twojej dystrybucji Linuxowej (ja u┐y│em RedHata 3.0.3 (Picasso) i poni┐sze przyk│ady bazuj▒ na tej dystrybucji). Im mniej oprogramowania zainstalujesz tym mniej bΩdzie w nim dziur, tylnych wej╢µ i / lub b│Ωd≤w wprowadzaj▒cych do twojego systemu problem bezpiecze±stwa, wiΩc zainstaluj jedynie minimalny zestaw aplikacji. U┐yj stabilnego j▒dra. Ja u┐y│em 2.0.14. Oto jest dokumentacja podstawowych ustawie±: BΩdziesz potrzebowa│ rekompilowaµ j▒dro sytemu z odpowiednimi opcjami. (patrz Kernel-HOWto, Ethernet-HOWto oraz NET-2 HOWto je╢li nie zrobi│e╢ tego wcze╢niej). Oto s▒ sieciowe ustawienia kt≤re pozna│em wykonuj▒c komendΩ make config 1. Under General setup a. Turn Networking Support ON 2. Under Networking Options a. Turn Network firewalls ON b. Turn TCP/IP Networking ON c. Turn IP forwarding/gatewaying OFF (UNLESS you wish to use IP filtering) d. Turn IP Firewalling ON e. Turn IP firewall packet loggin ON (this is not required but it is a good idea) f. Turn IP: masquerading OFF (I am not covering this subject here.) g. Turn IP: accounting ON h. Turn IP: tunneling OFF i. Turn IP: aliasing OFF j. Turn IP: PC/TCP compatibility mode OFF k. Turn IP: Reverse ARP OFF l. Turn Drop source routed frames ON 3. Under Network device support a. Turn Network device support ON b. Turn Dummy net driver support ON c. Turn Ethernet (10 or 100Mbit) ON d. Select your network card Teraz mo┐esz dokonaµ rekompilacji i reinstalacji j▒dra oraz zrestartowaµ system. Twoja karta/y sieciowa/e powinny pojawiµ siΩ w trakcie procedury startowej. Jesli tak siΩ nie dzieje sprawd╝ w innych JTZ, i pr≤buj dop≤ki nie bΩd▒ dzia│aµ. 5.2. Ustawienie dw≤ch kart sieciowych Je╢li masz dwie kary sieciowe w swoim komputerze w wiΩkszo╢ci przypadk≤w potrzebujesz dodaµ twierdzenie w pliku /etc/lilo.conf opisuj▒ce ich IRQ i adresy. W moim wypadku wygl▒da to tak: append= " ether=12,0x300,eth0 ether=15,0x340,eth1 " 5.3. Ustawienie adres≤w sieciowych Jest to naprawdΩ interesuj▒ca czΩ╢µ. Teraz jest czas na podjΩcie kilku decyzji. Dop≤ki nie chcemy daµ dostΩpu komputerom z Internetu do ┐adnej z czΩ╢ci naszej sieci lokalnej nie musimy u┐ywaµ prawdziwych adres≤w. Istniej▒ numery wydzielone z internetowych do ustawienia odrΩbnych sieci prywatnych (przyp. t│umacza: klasa A 10.0.0.0-10.255.255.255, klasy B, i klasy C: 192.168.0.0.0-192.166.255.255) Poniewa┐ ka┐dy potrzebuje wiΩcej adres≤w i poniewa┐ adres nie mog▒ siΩ powtarzaµ w Internecie jest to dobry wyb≤r. Wybrali╢my jedn▒ z tych klas: 192.168.2.xxx, i u┐yjemy jej w naszym przyk│adzie. Tw≤j serwer proxy bΩdzie cz│onkiem obu sieci i bΩdzie przekazywa│ dane do i z sieci prywatnej. 199.1.2.10 __________ 192.168.2.1 192.168.2.2 _ __ _ \ | | / ____/__________ | \/ \/ | \| Firewall |/ | Stacja | / Internet \--------| |------------| Robocza | \_/\_/\_/\_/ |__________| |_______________| Je╢li u┐ywasz filtruj▒cego firewalla mo┐esz u┐ywaµ tych numer≤w stosuj▒c IP masquearading Firewall bΩdzie przesy│a│ pakiety i t│umaczy│ numery IP na ,,PRAWDZIWE'' adresy w Internecie. Musisz przydzieliµ prawdziwy adres IP karcie sieciowej widocznej z Internetu (na zewn▒trz). I przydzieliµ adres 192.168.2.1 karcie Ethernetowej wewn▒trz. To bΩdzie adres IP twojego gatewaya/proxy. Mo┐esz przydzieliµ pozosta│ym maszynom ze swojej sieci numery z zakresu 192.168.2.2-192.168.2.254. Odk▒d u┐ywam RedHat Linux do ustawienia sieci przy starcie dodajΩ plik ifcfg-eth1 w katalogu /etc/sysconfig/network-scripts/. Jest on czytany w trakcie startu systemu i ustawiania sieci i tablic routingu. M≤j ifcfg-eth1 wygl▒da nastΩpuj▒co: #!/bin/sh #>>>Device type: ethernet #>>>Variable declarations: DEVICE=eth1 IPADDR=192.168.2.1 NETMASK=255.255.255.0 NETWORK=192.168.2.0 BROADCAST=192.168.2.255 GATEWAY=199.1.2.10 ONBOOT=yes #>>>End variable declarations Mo┐esz tak┐e u┐yµ tego skryptu do automatycznego po│▒czenia mode¡ mowego do twojego IPS. Sp≤jrz na skrypt ipup-pop Je╢li u┐ywasz modemu do │▒czenia siΩ z sieci▒ tw≤j zewnΩtrzny adres bΩdzie przydzielony w trakcie po│▒czenia. 5.4. Testowanie twojej sieci Zacznij od sprawdzenia ifconfig i trasowania (routingu) je╢li masz dwie karty wynik polecenia ifconfig powinien wygl▒daµ nastΩpuj▒co: #ifconfig lo Link encap:Local Loopback inet addr:127.0.0.0 Bcast:127.255.255.255 Mask:255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1 RX packets:1620 errors:0 dropped:0 overruns:0 TX packets:1620 errors:0 dropped:0 overruns:0 eth0 Link encap:10Mbps Ethernet HWaddr 00:00:09:85:AC:55 inet addr:199.1.2.10 Bcast:199.1.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:12 Base address:0x310 eth1 Link encap:10Mbps Ethernet HWaddr 00:00:09:80:1E:D7 inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:15 Base address:0x350 a twoja tablica trasowania mniej wiΩcej tak: #route -n Kernel routing table Destination Gateway Genmask Flags MSS Window Use Iface 199.1.2.0 * 255.255.255.0 U 1500 0 15 eth0 192.168.2.0 * 255.255.255.0 U 1500 0 0 eth1 127.0.0.0 * 255.0.0.0 U 3584 0 2 lo default 199.1.2.10 * UG 1500 0 72 eth0 Uwaga: 199.1.2.0 jest numerem interface po internetowej stronie firewalla za╢ 192.168.2.0 jest wewn▒trz. Teraz spr≤buj pingn▒µ siΩ do Internetu z firewalla. Ja zwyk│em u┐ywaµ nic.dnn.mil jako punktu testowego (w Polsce doradza│bym bilbo.nask.org.pl 148.81.16.51). Jest to wci▒┐ dobry test, ale nie dostarcza tylu informacji ile by siΩ chcia│o. Je╢li nie rusza za pierwszym razem spr≤buj zapukaµ do innych komputer≤w poza swoj▒ sieci▒ lokaln▒. Je╢li nie dzia│a to znaczy ┐e twoje po│▒czenie PPP jest ╝le ustawione. Przeczytaj jeszcze raz Net-2 HOWto i spr≤buj jeszcze raz. NastΩpnie pingnij siΩ z firewalla do komputera wewn▒trz chronionej sieci. Ka┐dy komputer powinien m≤c sondowaµ inny. Je╢li nie sp≤jrz jeszcze raz do Net-2 HOWto i popraw ustawienia w swojej sieci. Teraz spr≤buj pingn▒µ zewnΩtrzny adres z wewnΩtrznej czΩ╢ci chronionej sieci. (Notka: to nie jest ┐aden z numer≤w IP zaczynaj▒cych siΩ od: 192.168.2.xxx.) Je╢li jest to mo┐liwe, to znaczy ┐e nie wy│▒czy│e╢ przesy│ania IP w konfiguracji j▒dra. Upewnij siΩ, ┐e tego chcesz. Je╢li zostawisz tΩ opcjΩ w│▒czon▒, musisz zapoznaµ siΩ z czΩ╢ci▒ tego dokumentu opisuj▒c▒ filtrowanie pakiet≤w IP. Teraz spr≤buj sondowaµ internet zza swojego firewalla. U┐yj tego samego adresu co poprzednio (np. bilbo.nask.org.pl). Znowu, je╢li wy│▒czy│e╢ IP Forwarding nie powinno dzia│aµ. Albo powinno, je╢li w│▒czy│e╢. Je╢li masz ustawiony IP Forwarding i u┐ywasz ,,PRAWDZIWYCH'' (nie 192.168.2.*) adres≤w IP i nie mo┐esz wyj╢µ na zewn▒trz, ale mo┐esz siΩ dostaµ do internetowej strony swego firewalla sprawd╝ czy nastΩpny router przepuszcza pakiety z twojej sieci lokalnej (tw≤j dostawca us│ug internetowych powinien co╢ o tym wiedzieµ). Je╢li przydzieli│e╢ swojej sieci adresy 192.168.2.* pakiety i tak nie bΩd▒ filtrowane. Je╢li przechodz▒ mimo wszystko i masz IP masquerading w│▒czone ten test te┐ zosta│ zdany. Masz teraz podstawow▒ konfiguracjΩ systemu. 5.5. Zabezpieczanie firewalla. Firewall nie spe│nia swojego zadania je╢li zostawia otwarte okno dla atak≤w przez nieu┐ywane us│ugi. ,,¼li ch│opcy'' mog▒ zdobyµ twierdzΩ i zmodyfikowaµ j▒ dla swoich potrzeb. Zacznij wy│▒czaµ niepotrzebne us│ugi. Sp≤jrz na /etc/inetd.conf. Plik ten kontroluje co╢ co jest nazywane ,,super serwerem''. Kontroluje uruchamianie us│ug na ┐▒danie. Kompletnie wy│▒cz: netstat, systat, tftp, bootp oraz finger. Aby wy│▒czyµ us│ugΩ wystarczy postawiµ znak # (tzw. hash) jako pierwszy znak w linii. kiedy to zrobisz wy╢lij sygna│ HUP do procesu inetd pisz▒c: " kill -HUP < pid > " , gdzie < pid > jest numerem procesu inetd. Spowoduje to powt≤rne przeczytanie przez inetd pliku konfiguracyjnego (inetd.conf) i restart. Sprawd╝ teraz czy jeste╢ w stanie dostaµ siΩ do portu obs│uguj▒cego netstat telnet localhost 15 Je╢li otrzymasz wynik z netstata nie zrestartowa│e╢ inetd prawid│owo. 6. Konfigurowanie filtrowania IP (IPFWADM) By zacz▒µ musisz w│▒czyµ przesy│anie pakiet≤w IP w swoim j▒drze i tw≤j system powinien odsy│aµ wszystko co mu siΩ prze╢le. Twoja tablica trasowania powinna byµ ustawiona i powiniene╢ mi╢ dostΩp tak wewn▒trz jak do zewnΩtrznej Sieci. Ale budujemy firwalla tak wiΩc trzeba ograniczyµ wszystkim dostΩp do niego. W moim systemie stworzy│em parΩ skrypt≤w ustawiaj▒cych zasady odsy│ania pakiet≤w i polityki dostΩpu. Wywo│ujΩ je z w skryptach z /etc/rc.d w czasie konfiguracji. Domy╢lnie IP Forwarding w j▒drze systemu odsy│a wszystko. Dlatego twoje skrypty startowe firewalla powinny rozpoczynaµ swoja pracΩ od zakazania dostΩpu dla wszystkich i zerwania wszelkich po│▒cze± dozwolonych w poprzednim uruchomieniu ipfw. Skrypt ten wykorzystuje pewien trick. # # Ustawianie rozliczania i odsy│ania pakiet≤w IP # # Forwarding # # Domy╢lnie wszystkie us│ugi s▒ zakazane. ipfwadm -F -p deny # Zerwij wszystkie po│▒czenia ipfwadm -F -f ipfwadm -I -f ipfwadm -O -f Teraz mamy doskona│y firewall. Nic nie przechodzi. Bez w▒tpliwo╢ci pewna cze╢µ us│ug powinna byµ przesy│ana (i tego dotyczy nastΩpny przyk│ad). # przesy│anie poczty do twojego MTA ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.10 25 # przesy│anie po│▒cze± pocztowych do innych MTA ipfwadm -F -a accept -b -P tcp -S 196.1.2.10 25 -D 0.0.0.0/0 1024:65535 # przesy│anie WWW do twojego serwera /sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 196.1.2.11 80 # przesy│anie WWW do serwer≤w zewnΩtrznych /sbin/ipfwadm -F -a accept -b -P tcp -S 196.1.2.* 80 -D 0.0.0.0/0 1024:65535 # przesy│anie ruchu DNS /sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0/0 53 -D 196.1.2.0/24 Mo┐esz byc zaintersowany w rozliczaniu ruchu przechodz▒cego przez tw≤j firewall. Poni┐szy skrypt liczy ka┐dy z pakiet≤w. Powiniene╢ dodaµ liniΩ albo liczyµ ruch tylko dla jednego systemu. # Zerwanie wszystkich po│▒cze± ipfwadm -A -f # Rozliczanie /sbin/ipfwadm -A -f /sbin/ipfwadm -A out -i -S 196.1.2.0/24 -D 0.0.0.0/0 /sbin/ipfwadm -A out -i -S 0.0.0.0/0 -D 196.1.2.0/24 /sbin/ipfwadm -A in -i -S 196.1.2.0/24 -D 0.0.0.0/0 /sbin/ipfwadm -A in -i -S 0.0.0.0/0 -D 196.1.2.0/24 Je╢li potrzebowa│e╢ firewalla filtruj▒cego mo┐esz sko±czyµ lekturΩ. Mi│ego konfigurowania. ; -) 7. Instalowania serwera proxy - TIS 7.1. Pobranie oprogramowania TIS FWTK jest dostΩpny pod adresem: <ftp://ftp.tis.com/>. Nie pope│nij tego b│Ωdu co ja. Kiedy dostaniesz siΩ na serwer TIS PRZECZYTAJ ,,README'' Pakiet TIS fwtk jest w ukrytym katalogu na ich serwerze. TIS wymaga byµ wys│a│ email do fwtk-request@tis.com zawieraj▒cego tylko s│owo SEND w ,,ciele'' wiadomo╢ci aby poznaµ nazwΩ tego ukrytego katalogu (nie jest potrzebny temat dla tego listu). Ich system wy╢le Ci wiadomo╢µ z nazw▒ katalogu w ci▒gu 12 godzin. PiszΩ o wersji 2.0 (beta) TIS FWTK. Wersja ta kompiluje siΩ dobrze (z pewnymi wyj▒tkami) i wygl▒da ┐e wszystko pracuje (u mnie). Gdy zostanie opublikowana wersja pe│na uaktualniΩ to HowTo. Aby zainstalowaµ FWTK stw≤rz katalog fwtk-2.0 w /usr/src. Przenie╢ tak kopiΩ (fwtk-2.0.tar.gz) odpakuj j▒ (tar zxf fwtk-2.0.tar.gz). FWTK nie po╢redniczy w przekazywaniu SSL (bezpieczne dokumenty w WWW) ale posiada dodatek napisany przez Jean-Christophe Touvet. Jest on dostΩpny pod adresem <ftp://ftp.edelweb.fr/pub/contrib/fwtk/ssl- gw.tar.Z>. Touvet nie ╢wiadczy wsparcia technicznego dla tego kodu. U┐ywam zmodyfikowanej wersji: w│▒czy│em modu│ dostΩpu do bezpiecznych serwer≤w news Netscape napisany przez Eric Wedel <ftp://mdi.meridian- data.com/pub/tis.fwtk/ssl-gw/ssl-gw2.tar.Z>. W naszych przyk│adach bΩdΩ u┐ywa│ wersji Wedel'a. Aby go zainstalowaµ po prostu strw≤┐ katalog ssl-gw w katalogu /usr/src/fwtk-2.0 i wsad╝ tam odpowiednie pliki. Kiedy instalowa│em tΩ bramΩ potrzebne by│y drobne zmiany zanim mog│em skompilowaµ resztΩ zestawu. Pierwsza zmiana nast▒pi│a w pliku ssl-gw.c . Nie potrafi│ w│▒czyµ jednego z plik≤w include. #if defined(__linux) #include <sys/ioctl.h> #endif Druga zmiana polega│a na stworzeniu pliku Makefile. Skopiowa│em jeden z innej ,,bramy'' i zast▒pi│em nazwΩ tego modu│u nazw▒ ssl-gw. 7.2. Kompilacja TIS FWTK Wersja 2.0 FWTK kompiluje siΩ │atwiej ni┐ poprzednie. Wci▒┐ jednak jest kilka rzeczy kt≤re powinny byµ zmienione zanim wersja beta bΩdzie siΩ kompilowaµ bez przeszk≤d. Pozostaje mieµ nadziejΩ, ┐e do tak siΩ stanie w pe│nej wersji. Aby to poprawiµ zacznij zmiany od katalogu /usr/src/fwtk/fwtk i skopiuj plik Makefile.config.linux na Makefile.config. Nie uruchamiaj FIXMAKE. Instrukcja m≤wi by╢ to zrobi│. Je╢li chcesz zniszczyµ Makefile we wszystkich podkatalogach... Wykona│em poprawkΩ do fixmake Problem polega│ na tym, ┐e fixmake dodawa│ '.' i '' do w│▒czanych do Makefile linii. sed 's/^include[ ]*\([^ ].*\)/include \1/' $name .proto > $name NastΩpnie bΩdziemy musieli wyedytowaµ Makeconfig.file. Potrzebne bΩd▒ dwie zmiany. Autor programu ustawi│ ╝r≤d│a programu w swoim $HOME/. My kompilujemy w /usr/src i powinni╢my zmieniµ zmienn▒ FWTKSRCDIR. FWTKSRCDIR=/usr/src/fwtk/fwtk Po drugie, przynajmniej niekt≤re Linuxy u┐ywaj▒ bazy danych w formacie gdbm. W Makefile.config jest u┐ywana dbm Zapewne bΩdziesz musia│ to zmieniµ. Ja w RedHacie 3.0.3 musia│em. DBMLIB=-lgdbm Ostania poprawka jest w katalogu x-gw. B│▒d w wersji beta jest w pliku socket.c. Poprawka polega na usuniΩciu tych linii. #ifdef SCM_RIGHTS /* 4.3BSD Reno and later */ + sizeof(un_name->sun_len) + 1 #endif Je╢li doda│e╢ ssl-gw do swojego katalogu ╝r≤de│ trzeba jeszcze dodaµ do listy katalog≤w w Makefile. DIRS= smap smapd netacl plug-gw ftp-gw tn-gw rlogin-gw http-gw x-gw ssl-gw Teraz uruchom make. 7.3. Instalacja TIS FWTK Uruchom make install. Standardowo katalogiem instalacyjnym jest /usr/local/etc. Mo┐esz to zmieniµ (ja tego nie zrobi│em) na bardziej bezpieczny katalog. Ja zmieni│em prawa dostΩpu do niego na chmod 700 . Na koniec pozosta│a nam konfiguracja firewalla. 7.4. Konfiguracja firewalla TIS FWTK Teraz naprawdΩ rozpoczynamy. Musisz nauczyµ system wywo│ywania tych nowych us│ug i stworzyµ tablice do ich kontroli. Nie pr≤bujΩ przepisywaµ tutaj dokumentacji do TIS FWTK. ChcΩ pokazaµ takie ustawienia jakie u mnie dzia│a│y i wyja╢niµ problemy jakie spotka│em. Istniej▒ trzy pliki kontroluj▒ce firewalla. ╖ /etc/services ╖ m≤wi▒cy systemowi jaki port obs│uguje jak▒ us│ugΩ. ╖ /etc/inetd.conf ╖ m≤wi▒cy serwerowi inetd jaki program wywo│aµ gdy kto╢ bΩdzie siΩ dobija│ do zadanego portu. ╖ /usr/local/etc/netperm-table ╖ m≤wi▒cy FWTK kto jest dopuszczony a kogo winno siΩ odrzucaµ przy danej us│udze. Aby uzyskaµ poprawne funkcjonowanie FWTK powiniene╢ wyedytowaµ te pliki poczynaj▒c od g≤ry. Edycja jedynie services bez inetd.conf i netperm-table ustawionych prawid│owo uczyni tw≤j system niedostΩpnym. 7.4.1. Plik netperm-table Plik ten odpowiada za kontrolΩ kto ma dostΩp do us│ug nadzorowanych przez TIS FWTK. Powiniene╢ my╢leµ o ruch z obu stron firewalla. Ludzie z zewn▒trz twojej sieci powinni zidentyfikowaµ siΩ przed otrzymaniem dostΩpu, ale ludzie z wewn▒trz mog▒ zostaµ dopuszczeni od razu. Aby ludzie moli siΩ zidentyfikowaµ firewall u┐ywa programu o nazwie authsrv do trzymania bazy danych o u┐ytkownikach i ich has│ach. Sekcja dotycz▒ca autentyfikacji w netperm-table pozwala kontrolowaµ gdzie jest trzymana baza danych i kto ma do niej dostΩp. Mia│em trochΩ k│opot≤w z blokowaniem dostΩpu do us│ug. We╝ pod uwagΩ ┐e linia kt≤r▒ pokazujΩ u┐ywa '*' do dawania dostΩpu dla ka┐dego do tej us│ugi. Prawid│owe ustawienie tej linii jest nastΩpuj▒ce: j▒ pracuj▒c▒. # # tablica konfiguracji serwera proxy # # Autentyfikacja: regu│y serwera i klienta authsrv: database /usr/local/etc/fw-authdb authsrv: permit-hosts * authsrv: badsleep 1200 authsrv: nobogus true # Aplikacje klienckie u┐ywaj▒ce serwera autentyfikacji *: authserver 127.0.0.1 114 Aby zaincjalizowaµ bazΩ danych wykonaj su do root`a i uruchom ./authsrv w katalogu /var/local/etc by stworzyµ rekord opisuj▒cy administratora systemu. Oto jest przyk│adowa sesja. Przeczytaj dokumentacjΩ FWTK, by dowiedzieµ siΩ jak dodaµ u┐ytkownik≤w i grupy. # # authsrv authsrv# list authsrv# adduser admin " Auth DB admin " ok - user added initially disabled authsrv# ena admin enabled authsrv# proto admin pass changed authsrv# pass admin " plugh " Password changed. authsrv# superwiz admin set wizard authsrv# list Report for users in database user group longname ok? proto last ------ ------ ------------------ ----- ------ ----- admin Auth DB admin ena passw never authsrv# display admin Report for user admin (Auth DB admin) Authentication protocol: password Flags: WIZARD authsrv# ^D EOT # Kontrola przez bramΩ telnetu (tn-gw) polega na prostym przes│aniu i jest to pierwsza kt≤r▒ powiniene╢ ustawiµ. W moim przyk│adzie pozwoli│em komputerom z wnΩtrza sieci prywatnej na dostΩp bez autentyfikacji (permit-hosts 19961.2.* -passok). Ale inni u┐ytkownicy powinni wprowadziµ swoj▒ nazwΩ u┐ytkownika i has│o. (permit-hosts * -auth) Poza tym pozwoli│em jednemu innemu systemowi (196.1.2.202) na dostΩp do firewalla bezpo╢rednio, bez przechodzenia przez procedury na nim. Sprawiaj▒ to dwie linie z inetacl-in.telnetd Wyja╢niΩ ich dzia│anie potem. Powiniene╢ zachowaµ kr≤tki czas timeoutu. # regu│y dostΩpu telnetu do firewalla: tn-gw: denial-msg /usr/local/etc/tn-deny.txt tn-gw: welcome-msg /usr/local/etc/tn-welcome.txt tn-gw: help-msg /usr/local/etc/tn-help.txt tn-gw: timeout 90 tn-gw: permit-hosts 196.1.2.* -passok -xok tn-gw: permit-hosts * -auth # Tylko administrator mo┐e wykonaµ telnet na port 24 firewalla. netacl-in.telnetd: permit-hosts 196.1.2.202 -exec /usr/sbin/in.telnetd I to samo z r-command. # regu│y dostΩpu rlogin do firewalla rlogin-gw: denial-msg /usr/local/etc/rlogin-deny.txt rlogin-gw: welcome-msg /usr/local/etc/rlogin-welcome.txt rlogin-gw: help-msg /usr/local/etc/rlogin-help.txt rlogin-gw: timeout 90 rlogin-gw: permit-hosts 196.1.2.* -passok -xok rlogin-gw: permit-hosts * -auth -xok # Tylko administrator mo┐e wykonaµ telnet na port 24 firewalla. netacl-rlogind: permit-hosts 196.1.2.202 -exec /usr/libexec/rlogind -a Nie powiniene╢ dawaµ nikomu bezpo╢redniego dostΩpu do firewalla, w│▒czaj▒c w to dostΩp prze FTP (tak pobieranie jak i wk│adanie). Jeszcze raz, linie zawieraj▒ce permit-hosts pozwalaj▒ ka┐demu w chronionej na wolny dostΩp do Internetu, za╢ wszyscy inni musz▒ siΩ autentyfikowaµ. W│▒czy│em zapisywanie ka┐dego pliku pobranego i wys│anego do mojej konfiguracji. (-log { retr stor }) Timeouty FTP daj▒ ci kontrolΩ nad tym jak d│ugo bΩd▒ utrzymywane ,,z│e'' po│▒czenia i jak d│ugo bΩd▒ utrzymywane po│▒czenia bez ┐adnej aktywno╢ci. # regu│y dostΩpu ftp do firewalla ftp-gw: denial-msg /usr/local/etc/ftp-deny.txt ftp-gw: welcome-msg /usr/local/etc/ftp-welcome.txt ftp-gw: help-msg /usr/local/etc/ftp-help.txt ftp-gw: timeout 300 ftp-gw: permit-hosts 196.1.2.* -log { retr stor } ftp-gw: permit-hosts * -authall -log { retr stor } WWW, Gopher i bazuj▒ce na przegl▒darkach FTP jest kontrolowane przez http-gw. Pierwsze dwie linie tworz▒ katalog gdzie bΩd▒ sk│adowane pliki i dokumenty z FTP i WWW. Przy czym s▒ one w│asno╢ci▒ root`a i s▒ sk│adowane w katalogu dostΩpnym tylko dla niego. Po│▒czenia WWW powinny byµ bardzo kr≤tki. W ten spos≤b mo┐na kontrolowaµ jak d│ugo u┐ytkownicy bΩd▒ utrzymywaµ b│Ωdne po│▒czenia. # regu│y dostΩpu dla WWW i Gophera http-gw: userid root http-gw: directory /jail http-gw: timeout 90 http-gw: default-httpd www.afs.net http-gw: hosts 196.1.2.* -log { read write ftp } http-gw: deny-hosts * ssl-gw ustawia siΩ tak samo ja i inne bramy. B▒d╝ z ni▒ ostro┐ny. W tym przyk│adzie pozwalam wszystkim z sieci chronionej na │▒czenie siΩ z ka┐dym z serwer≤w na zewn▒trz z wyj▒tkiem adres≤w 127.0.0.* i 192.1.1.* oraz (wtedy) na otwieranie port≤w 443 do 563 u┐ywanych jako znane porty dla SSL. # zasady dla bramy ssl: ssl-gw: timeout 300 ssl-gw: hosts 196.1.2.* -dest { !127.0.0.* !192.1.1.* *:443:563 } ssl-gw: deny-hosts * Poni┐ej znajduje siΩ przyk│ad jak u┐yµ plug-gw aby pozwoliµ na po│▒czenie do serwera news. W tym przyk│adzie zezwalam ka┐demu z sieci lokalnej na dostΩp do tylko jednego systemu i tylko na porcie zajΩtym przez news. W drugiej linii pozwalam serwerowi news przes│aµ dane z powrotem do chronionej sieci. Poniewa┐ wiΩkszo╢µ klient≤w spodziewa siΩ, ┐e pozostaje pod│▒czenie w czasie gdy u┐ytkownik czyta wiadomo╢ci timeout dla news powinien byµ d│ugi. # brama dla modu│u plug-gw i NetNews plug-gw: timeout 3600 plug-gw: port nntp 196.1.2.* -plug-to 199.5.175.22 -port nntp plug-gw: port nntp 199.5.175.22 -plug-to 196.1.2.* -port nntp Brama dla fingera jest prosta. Ka┐dy z chronionej sieci powinien siΩ za│ogowaµ i wtedy pozwalamy mu na u┐ycie fingera na firewallu. Pozostali nie po prostu dostaj▒ wiadomo╢µ. # uruchomienie us│ugi finger netacl-fingerd: permit-hosts 196.1.2.* -exec /usr/libexec/fingerd netacl-fingerd: permit-hosts * -exec /bin/cat /usr/local/etc/finger.txt Nie mam ustawionych us│ug dla poczty elektronicznej i X-Windows wiΩc nie dajΩ przyk│ad≤w. Je╢li kto╢ ma dzia│aj▒cy przyk│ad, proszΩ o przys│anie mi. 7.4.2. Plik inetd.conf Oto jest kompletny plik /etc/inetd.conf . Wszystkie niepotrzebne us│ugi zosta│y wykomentowane. W│▒czy│em pe│ny plik aby pokazaµ co wy│▒czyµ i jak ustawiµ now▒ us│ugΩ w ╢cianie ognia. {od t│umacza: nie przek│adam typowych dla tego pliku linii} #echo stream tcp nowait root internal #echo dgram udp wait root internal #discard stream tcp nowait root internal #discard dgram udp wait root internal #daytime stream tcp nowait root internal #daytime dgram udp wait root internal #chargen stream tcp nowait root internal #chargen dgram udp wait root internal # brama FTP w ╢cianie ognia ftp-gw stream tcp nowait.400 root /usr/local/etc/ftp-gw ftp-gw # brama Telnetu w ╢cianie ognia telnet stream tcp nowait root /usr/local/etc/tn-gw /usr/local/etc/tn-gw # local telnet services telnet-a stream tcp nowait root /usr/local/etc/netacl in.telnetd # brama Gophera w ╢cianie ognia gopher stream tcp nowait.400 root /usr/local/etc/http-gw /usr/local/etc/http-gw # brama WWW w ╢cianie ognia http stream tcp nowait.400 root /usr/local/etc/http-gw /usr/local/etc/http-gw # SSL w ╢cianie ognia ssl-gw stream tcp nowait root /usr/local/etc/ssl-gw ssl-gw # NetNews firewall proxy (using plug-gw) nntp stream tcp nowait root /usr/local/etc/plug-gw plug-gw nntp #nntp stream tcp nowait root /usr/sbin/tcpd in.nntpd # SMTP (email) w ╢cianie ognia #smtp stream tcp nowait root /usr/local/etc/smap smap # # Shell, login, exec and talk are BSD protocols. # #shell stream tcp nowait root /usr/sbin/tcpd in.rshd #login stream tcp nowait root /usr/sbin/tcpd in.rlogind #exec stream tcp nowait root /usr/sbin/tcpd in.rexecd #talk dgram udp wait root /usr/sbin/tcpd in.talkd #ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd #dtalk stream tcp waut nobody /usr/sbin/tcpd in.dtalkd # # Pop and imap mail services et al # #pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d #pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d #imap stream tcp nowait root /usr/sbin/tcpd imapd # # The Internet UUCP service. # #uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico -l # # Tftp service is provided primarily for booting. Most sites # run this only on machines acting as " boot servers. " Do not uncomment # this unless you *need* it. # #tftp dgram udp wait root /usr/sbin/tcpd in.tftpd #bootps dgram udp wait root /usr/sbin/tcpd bootpd # # Finger, systat and netstat give out user information which may be # valuable to potential "system crackers." Many sites choose to disable # some or all of these services to improve security. # # cfinger is for GNU finger, which is currently not in use in RHS Linux # finger stream tcp nowait root /usr/sbin/tcpd in.fingerd #cfinger stream tcp nowait root /usr/sbin/tcpd in.cfingerd #systat stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx #netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f inet # # Time service is used for clock syncronization. # #time stream tcp nowait root /usr/sbin/tcpd in.timed #time dgram udp wait root /usr/sbin/tcpd in.timed # # Authentication # auth stream tcp wait root /usr/sbin/tcpd in.identd -w -t120 authsrv stream tcp nowait root /usr/local/etc/authsrv authsrv # # End of inetd.conf 7.4.3. Plik /etc/services Tutaj siΩ wszystko zaczyna. Gdy klient │▒czy siΩ ze ╢cian▒ ognia dzieje siΩ to na tzw. dobrze znanym porcie (ni┐szym od 1024). Na przyk│ad telnet │▒czy siΩ na porcie 23. Serwer inetd s│yszy pro╢bΩ o po│▒czenie, i szuka nazwy tej us│ugi w /etc/services. P≤╝niej wzywa programy wyznaczony dla tej us│ugi w /etc/inedt.conf Niekt≤re z us│ug nie s▒ normalnie tworzone przez wywo│anie w /etc/serwices. Mo┐na przydzielaµ niekt≤re porty jak chcemy, Na przyk│ad ja przydzia│em us│udze ,,telnet administratora'' (telnet-a) port 24. Ty mo┐esz przydzieliµ tΩ us│ugΩ na portowi 2323, je╢li chcesz. Dla administratora (CIEBIE) bezpo╢rednie po│▒czenie ze ╢cian▒ ognia na porcie 24 nie 23 no┐e byµ potrzebne, je╢li masz ustawion▒ swoj▒ chronionej sieci. telnet-a 24/tcp ftp-gw 21/tcp # this named changed auth 113/tcp ident # User Verification ssl-gw 443/tcp 8. Serwer proxy SOCKS 8.1. Konfigurowanie serwera Proxy SOCKS proxy server dostΩpny jest z adresu: <ftp://sunsite.unc.edu/pub/Linux/system/Network/misc/socks-linux- src.tgz>. Zawiera przyk│adowy plik konfiguracyjny w katalogu nazwanym: " socks-conf " . Zdekompresuj i untaruj te pliki w dowolnym katalogu i postΩpuj wed│ug instrukcji. Mia│em kilka problem≤w kiedy kompilowa│em go. Upewnij siΩ, ┐e tw≤j Makefile jest prawid│owy. Jedn▒ z wa┐niejszych rzeczy jest pamiΩtanie o konieczno╢ci dodania serwera proxy do /etc/inetd.conf. Aby m≤c odpowiedzieµ na ┐▒dania musisz dopisaµ nastΩpuj▒c▒ liniΩ: socks stream tcp nowait nobody /usr/local/etc/sockd sockd 8.2. Konfiguracja serwera proxy Program SOCKS potrzebuje dw≤ch oddzielnych plik≤w konfiguracyjnych. Jeden z nich m≤wi tym komu udzieliµ dostΩpu a drugi w jaki spos≤b przekazywaµ ┐▒dania do w│a╢ciwego serwera proxy. Plik decyduj▒cy o dostΩpie powinien znajdowaµ siΩ na serwerze. Plik dotycz▒cy przekazywania dostΩpu (routingu) powinien znajdowaµ siΩ na ka┐dej z maszyn Unixowych. W wypadku DOSa i czΩ╢ciowo MaC≤w komputery powinny mieµ sw≤j w│asny routing. 8.2.1. Access File Plik dostΩpu. W wersji 4.2 Beta SOCSKs≤w plik dostΩpu nazywa siΩ " sockd.conf " . powinien zawieraµ dwie linie: zezwolenia i zakazu. Ka┐da z linii posiada trzy pozycje: ╖ identyfikator (permit/deny) ╖ adres IP ╖ modyfikator adresu Identyfikator to permit lub deny Powiniene╢ u┐yµ obu: ka┐dy we w│a╢ciwej linii. Adres IP powinien zawieraµ czterobajtowy adres w typowej dal IP notacji. np. 192.168.2.0. Modyfikator adresu tak┐e jest normalnym IP i pracuje jak maska. RozwiniΩcie tego adresu da 32 bity (1 albo zero). Na przyk│ad, w tej linii: permit 192.168.2.23 255.255.255.255 zezwalam na dostΩp maszynom w kt≤rych adres pasuje co do bitu z zadanym: pasuje tu tylko 192.168.2.23 permit 192.168.2.0 255.255.255.0 zezwala na dostΩp maszynom z gdyby od 192.168.2.0 do 192.168.2.255, w formie ca│ej klasy C. Nie powiniene╢ mieµ nastΩpuj▒cej linii: permit 192.168.2.0 0.0.0.0 daj▒cej dostΩp dla wszystkich adres≤w. Tak wiΩc pierwsza linia daje zezwolenie dla tych adres≤w kt≤rym chcesz go daµ, a druga zakazuje reszcie. Aby zezwoliµ na dostΩp wszystkim z klasy 192.168.2.xxx potrzeba linii: permit 192.168.2.0 255.255.255.0 deny 0.0.0.0 0.0.0.0 Zwr≤µ uwagΩ na pierwsze " 0.0.0.0 " w linii zakazu. Z mask▒ 0.0.0.0 taki adres nie istnieje. Wszystkie zera zosta│y tam wprowadzone bo s▒ │atwe do zapisu. Dopuszczalne jest umieszczenie wiΩkszej ilo╢ci jeden zapis≤w w ka┐dej z linii. Konkretni u┐ytkownicy mog▒ ponadto otrzymaµ lub traciµ prawo dostΩpu. jest to wykonywane przy pomocy autentyfikacji przy pomocy ident. Nie wszystkie systemu u┐ywaj▒ ident, w│▒czaj▒c w to Trumpet Winsock , dlatego te┐ nie w│▒czam tu przyk│ad≤w. Dokumentacja do SOCKS jest ca│kiem dobra w tej kwestii. 8.2.2. Tablica trasowania Tablica routingu w SOCS jest niestety nazywana socks.conf. Tablica routingu m≤wi klientom SOCKS kiedy u┐ywaµ socks a kiedy nie. Na przyk│ad, w twojej sieci 192.168.2.3 nie potrzebuje u┐ywania socks do po│▒czenia z 192.168.2.1. Po prostu │▒czy siΩ bezpo╢rednio, po Ethernecie. Definiuje siΩ automatycznie 127.0.0.1 jako loopback. Oczywiste jest, ┐e nie potrzebujesz rozmawiaµ przez ╢cianΩ ogniow▒ z samym sob▒... S▒ trzy typy rekord≤w: ╖ deny ╖ direct ╖ sockd Deny m≤wi SOCKS kiedy ma odm≤wiµ ┐▒daniu. Rekord ten ma takie same trzy pola jak sockd.conf: identyfikator, adres i maska. Og≤lnie, dop≤ki jest to modyfikowane przez sockd.conf, maska w pliku dostΩpu jest ustawiona na 0.0.0.0. Je╢li chcesz pozwoliµ na dzwonienie do siebie mo┐esz to zrobiµ tutaj. Rekord direct m≤wi kt≤re do kt≤rych adres≤w nie u┐ywaµ SOCKS. Te adresy bΩd▒ dorΩczone bez serwera proxy. Jeszcze raz, mamy trzy pola: identyfikator, adres i maska. direct 192.168.2.0 255.255.255.0 W ten spos≤b kierujesz bezpo╢rednio ca│y ruch w chronionej sieci. Rekord z sockd m≤wi komputerowi kt≤re z host≤w s▒ serwerem SOCKS Sk│adnia jest nastΩpuj▒ca: sockd @=<serverlist> <IP address> <modifier> Zwr≤µ uwagΩ na fragment: @= . Pozwala on na wprowadzenie listy ser¡ wer≤w proxy. W naszym przyk│adzie u┐ywamy tylko jednego. Ale mo┐esz mieµ wiele w celu zwiΩkszenia przepustowo╢ci i obni┐enia mo┐liwo╢ci awarii. Pola adresu IP i maski dzia│aj▒ jak w innych przyk│adach. Specyfikujesz adres i zakres jego obowi▒zywania. 8.2.3. zadaniem. Potrzeba jedynie ustawienia DNS na maszynie z fire¡ wallem. I inne maszyny za firewallem bΩd▒ go u┐ywa│y. DNS zza fire¡ walla Ustawienie us│ugi DNS zza firewalla jest prostym 8.3. Wsp≤│praca z serwerami proxy 8.3.1. Unix Aby twoje aplikacje dzia│a│y z serwerami proxy potrzebujesz je zsockisy... ( " sockified " ). BΩdziesz potrzebowa│ dw≤ch r≤┐nych telnet≤w (jeden do komunikacji bezpo╢redniej drugi przez serwer proxy). SOCKS przychodz▒ z instrukcj▒ jak zSOCKifikowaµ program, i z paroma programami przygotowanymi na tΩ mod│Ω. Je╢li u┐ywasz zSOCKIfowanej wersji gdziekolwiek bezpo╢rednio SOCKS automatycznie prze│▒czy ciΩ na w│a╢ciw▒ wersjΩ. Z tego powodu trzeba zmieniµ nazwy wszystkich program≤w w naszej chronionej sieci i zst▒piµ je wersjami zSOCKisowanymi. Finger stanie siΩ finger.orig, telnet stanie siΩ telnet.orig i tak dalej. Musisz powiedzieµ SOCKS o ka┐dym w pliku include/socks.h. Dobre programy s▒ w stanie dostarczaµ tablic trasowania i zsocksifikowaµ siΩ same. Jednym z nich jest Netscape Navigator. Mo┐esz u┐ywaµ serwer≤w proxy przez wprowadzenie adresu serwera (192.168.2.1 w naszym wypadku) w polu SOCKs w Menu Proxies. Ka┐da aplikacja potrzebuje przynajmniej minimalnej informacji o tym co jest serwerem proxy. 8.3.2. MS Windows i Trumpet Winsock Trumpet Winsock przychodzi z wbudowanymi mo┐liwo╢ciami wsp≤│pracy z serwerem proxy. W setup menu wprowad╝ adres serwera, i adresy komputer≤w dostΩpnych bezpo╢rednio. Program przekieruje na serwer wszystkie pakiety maj▒ce wyj╢µ na zewn▒trz. 8.3.3. Ustawienie serwera po╢rednicz▒cego do pracy z pakietami UDP. Pakiet SOCKS pracuje jedynie z pakietami TCP, pomijaj▒c UDP. Powoduje to trochΩ mniejsz▒ jego u┐yteczno╢µ. Wiele u┐ytecznych program≤w, takich jak na przyk│ad talk i Archie u┐ywa UDP. Jest jednak pakiet kt≤ry mo┐e byµ u┐yty jako serwer proxy dla UDP: UDPrelay stworzony przez Toma Fitzgeralda <fitz@wang.com>. Niestety w chwili pisania tego tekstu nie jest on zgodny z Linuxem. 8.4. Wady serwer≤w proxych Serwer proxy, jak pokaza│em powy┐ej jest narzΩdziem bezpiecze±stwa. U┐ywanie go zwiΩksza dostΩpno╢µ do Internetu z ograniczon▒ liczb▒ adres≤w wi▒┐e siΩ jednak z wieloma niedogodno╢ciami. Serwer proxy pozwala na wiΩksz▒ dostΩpno╢µ internetu z sieci chronionej, ale pozostawia wnΩtrze ca│kowicie niedostΩpne z zewn▒trz. Oznacza to brak mo┐liwo╢ci uruchomienia wewn▒trz sieci rozmaitych serwer≤w, talk i archie, oraz bezpo╢redniego wysy│ania list≤w do chronionej sieci. Poni┐sze uchybienia wygl▒daj▒ nieznacz▒ca, ale spos≤b my╢lenia przebiega nastΩpuj▒co: ╖ Otrzyma│e╢ informacjΩ o b│Ωdach w twojej chronionej sieci. Jeste╢ w domu, i decydujesz siΩ sprawdziµ to. Ale nie mo┐esz. Nie jeste╢ w stanie dostaµ siΩ do ┐adnego z komputer≤w poniewa┐ znajduj▒ siΩ za ╢cian▒ ogniow▒. ╖ Twoja c≤rka posz│a do college`u. Chcia│by╢ wys│aµ jej list. Chcesz z ni▒ porozmawiaµ o pewnych prywatnych sprawach, i wola│by╢ raczej by twoja poczta by│a kierowana bezpo╢rednio na tw≤j komputer. Ufasz swojemu administratorowi, ale to jednak prywatna poczta. ╖ Niemo┐liwo╢µ u┐ycia us│ug dzia│aj▒cych z UDP jest wielk▒ wad▒ serwer≤w proxych. Choµ mam nadziejΩ, ┐e ju┐ nied│ugo. Przypadek FTP pokazuje jeszcze jeden problem z serwerami proxymi. Kiedy pobieram pliki lub wydajΩ komendΩ ls, serwer FTP otwiera gniazdo (,,socket'') na maszynie klienckiej i wysy│a o tym informacjΩ. Serwer proxy nie pozwala na to, tak wiΩc FTP nie dzia│a w spos≤b prawid│owy. Poza tym serwery po╢rednicz▒ce dzia│aj▒ powoli. Z powodu wiΩkszej wydajno╢ci wiΩkszo╢µ innych metod dostΩpu do Internetu bΩdzie szybsza. Je╢li masz przydzielony adres IP, i nie martwisz siΩ o bezpiecze±stwo, nie u┐ywaj ╢cian ogniowych i/lub serwer≤w proxych. Je╢li nie masz nr. IP, i tak┐e nie martwisz siΩ o bezpiecze±stwo swojej sieci, mo┐esz u┐yµ jednego z ,,emulator≤w IP'' takich jak Term, Slirp lub TIA. Term jest dostΩpny z <ftp://sunsite.unc.edu/>, Slirp z <ftp://blitzen.canberra.edu.au/pub/slirp>, za╢ TIA z <http://markertplace.com/>. Pakiety te pracuj▒ szybciej, pozwalaj▒ na szybsze po│▒czenia i na wiΩkszy dostΩp z sieci wewnΩtrznej do internetu. Serwery po╢rednicz▒ce s▒ dobre dla tych kt≤ry maj▒ du┐e sieci z komputerami maj▒cymi mieµ dostΩp ,,w locie'' do internetu z jednorazowym ustawieniem, i minimalnym wk│adem pracy potem. 9. Konfiguracja zaawansowana. Przedstawi│em jedn▒ konfiguracjΩ, kt≤r▒ wypr≤bowa│em przez stworzeniem tego dokumentu. Przy czym ten zarys powinien wystarczyµ dla wiΩkszo╢ci ludzi. My╢lΩ ┐e poni┐szy opis zaawansowanych konfiguracji mo┐e rozwiaµ pozosta│e w▒tpliwo╢ci. Je╢li opr≤cz tego masz jeszcze jakie╢ pytania poza tym co opisa│em, albo ciΩ to po prostu interesuj▒ ciΩ szczeg≤│y zwi▒zane ze firewallami i serwerami proxy mo┐esz przeczytaµ poni┐szy fragment. 9.1. Wielkie sieci wymagaj▒ po│o┐enia nacisku na bezpiecze±stwo Powiedzmy, na przyk│ad, ┐e jeste╢ szefem milicji obywatelskiej i chcesz ,,usieciowµ'' swoj▒ siedzibΩ. Masz piΩµdziesi▒t komputer≤w i 32 nr IP (5 bit≤w). Potrzebujesz mo┐liwo╢ci dania r≤┐nych poziom≤w dostΩpu do sieci poniewa┐ powierzasz swoim wsp≤│pracownikom r≤┐ne zadania. Poza tym bΩdziesz potrzebowa│ izolacji okre╢lonych miejsc w sieci od reszty. Poziomy dostΩpu: 1. Poziom zewnΩtrzny - ukazywany wszystkim, tutaj werbujesz i zdobywasz nowych ochotnik≤w. 2. Troop poziom ten przeznaczony jest dla ludzi kt≤rzy otrzymali dostΩp z poziomu zewnΩtrznego. Tutaj jest miejsce gdzie uczysz o rz▒dzie dusz i jak zrobiµ bombΩ. 3. Mercenary Tutaj jest miejsce gdzie naprawdΩ planujesz chroniµ. Tutaj sk│adujesz wszelkie informacje o tym jak rz▒dy trzeciego ╢wiata zamierzaj▒ podbiµ ╢wiat, twoje plany dla Newt Gingich, Oklahoma City, sk│adujesz tajne informacje. 9.1.1. Konfiguracja sieci Numery IP s▒ ustawione w nastΩpuj▒cy spos≤b: ╖ 1 numer to 192.168.2.255, bΩd▒cy adresem rozg│oszeniowym nie u┐ywanym ╖ 23 z 32 adres≤w IP jest przydzielonych dla maszyn dostΩpnych w Internecie. ╖ 1 dodatkowy adres IP zosta│ przydzielony Linuxowi ╖ 1 dodatkowy adres IP zosta│ przydzielony innemu linuxowi ╖ 2 numery IP zosta│y przydzielone routerowi ╖ 4 pozosta│e pozostaj▒ od│▒czone ale otrzymuj▒ nazwy domenowe: paul, ringo, john, george . ╖ chroniona sieµ ma numer 192.168.2.xxx Teraz budujemy dwie izolowane sieci, ka┐da w innym pokoju. S▒ one trasowane przez ekranowany ethernet i s▒ kompletnie niewidoczne z innych pomieszcze±. Na szczΩ╢cie ekranowany Ethernet zachowuje siΩ tak samo jak zwyczajny ethernet. Ka┐da z tych sieci jest po│▒czona do jednej ze stacji linuxowych na dodatkowych adresach IP. S▒ to serwery plik≤w po│▒czone do obu chronionych sieci. Jest tak, poniewa┐ planujemy daµ dostΩp tak dla sieci Troops ja i wy┐szej. Serwer plik≤w nosi numery 192.168.2.17 dla sieci Troop i 192.168.2.23 dla sieci Mercenary. Maj▒ r≤┐ne adresy poniewa┐ maj▒ dwie r≤┐ne karty sieciowe. network. IP Forwarding jest wy│▒czony. IP Forwarding na obu stacjach linuxowych tak┐e jest wy│▒czony. Router nie powinien przesy│aµ pakiet≤w przeznaczonych dla sieci 192.168.2.xxx dop≤ki mu tego wprost nie powiemy, tak wiΩc dostΩp do internetu pozostaje wy│▒czony. Wy│▒czenie przesy│ania IP ma na celu zablokowanie po│▒cze± z sieci Troop do sieci Mercenary na odwr≤t. Serwer NFS mo┐e ponadto oferowaµ r≤┐ne pliki dla r≤┐nych sieci. To │atwe przy drobnych operacjach z symbolicznymi odniesieniami mo┐na zrobiµ w ten spos≤b ┐e wsp≤lne pliki s▒ dzielone przez wszystkich. U┐ycie tego typu ustawie± i r≤┐nych kart sieciowych umo┐liwia Ci zastosowanie jednego serwera plik≤w dla trzech sieci. 9.1.2. Serwer proxy Teraz, dop≤ki wszystkie trzy poziomu bΩd▒ mo┐liwe do pracy w ramach wyznaczonych zada± bΩd▒ potrzebowa│y dostΩpu do sieci. ZewnΩtrzna sieµ jest po│▒czona bezpo╢rednio z internetem, tak wiΩc nie ma tu zastosowania dla serwera po╢rednicz▒cego. Sieci Mercenary i Troop znajduj▒ siΩ za ╢cian▒ ogniow▒ wiΩc potrzebny im serwer proxy. Konfiguracja obu jest bardzo podobna. Oba maj▒ takie same adresu IP. Jedyna r≤┐nica polega na nieco innych parametrach. 1. Nie ka┐dy mo┐e u┐yµ serwera plik≤w dla dostΩpu do Interntu. Wystawia to go na wirusy i inne brzydkie rzeczu. 2. Nie chcemy zezwoliµ sieci Troop na dostΩp do WWW. Przechodz▒ szkolenie I jaki kolwiek przep│y informacji m≤g│by zniszczyµ jego efekty. Tak wiΩc w pliku sockd.conf w linuxie w sieci Troop znajdzie siΩ nastΩpuj▒ca linia. deny 192.168.2.17 255.255.255.255 a w stacji przeznaczonej dla Mercenary: deny 192.168.2.23 255.255.255.255 Teraz w stacji linuxowej sieci Troop wpisujemy: deny 0.0.0.0 0.0.0.0 eq 80 Ten tekst m≤wi ┐e zabraniamy dostΩpu wszystkich maszynom pr≤buj▒cym siΩ dostaµ do portu r≤wnego (eq) 80 (http). Nadal pozwala siΩ na dostΩp do wszystkich us│ug z wyj▒tkiem WWW. Teraz oba pliki powinny zawieraµ linie: permit 192.168.2.0 255.255.255.0 by zezwoliµ wszystkim komputerom z sieci 192.168.2.xxx na u┐ycie tego serwera po╢rednicz▒cego zamiast tego kt≤ry zosta│ zakazany (np. ser¡ wer plik≤w i dostΩp do WWW z sieci Troop). W sieci Troop w pliku sockd.conf powinien wygl▒daµ w ten spos≤b: deny 192.168.2.17 255.255.255.255 deny 0.0.0.0 0.0.0.0 eq 80 permit 192.168.2.0 255.255.255.0 a w sieci Mercenary mniej wiΩcej tak: deny 192.168.2.23 255.255.255.255 permit 192.168.2.0 255.255.255.0 To powinno zako±czyµ konfiguracjΩ wszystkiego. Ka┐da z sieci jest izolowana, z prawid│owymi ustawieniami interakcji. Ka┐dy powinien byµ szczΩ╢liwy. Dalej... Podbij ╢wiat... 10. Od t│umacza. ZdajΩ sobie sprawΩ ile w tym tekscie jest potkniΩµ jΩzykowych, przeinacze±. Je╢li kt≤re╢ ciΩ dra┐ni▒ prze╢lij mi swoje uwagi. Aha, jeszcze jedno. Wyra┐enia firewall i ╢ciana ogniowa oraz proxy i serwer po╢rednicz▒cy traktujΩ (przynajmniej na razie) zamiennie. (choc ju┐ wiΩkszo╢µ polskich odpowiednik≤w (na ┐yczenie publiczno╢ci) usun▒│em. Celowo pozostawiam tekst bez zwyczajowego (c) t│umacza ;-)